我的Bilibili频道:香芋派Taro
我的个人博客:taropie0224.github.io(阅读体验更佳)
我的公众号:香芋派的烘焙坊
我的音频技术交流群:1136403177
我的个人微信:JazzyTaroPie
https://leetcode-cn.com/problems/implement-queue-using-stacks/
题解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| class MyQueue { private: stack<int> inStack, outStack;
void in2out() { while (!inStack.empty()) { outStack.push(inStack.top()); inStack.pop(); } }
public: MyQueue() {}
void push(int x) { inStack.push(x); }
int pop() { if (outStack.empty()) { in2out(); } int x = outStack.top(); outStack.pop(); return x; }
int peek() { if (outStack.empty()) { in2out(); } return outStack.top(); }
bool empty() { return inStack.empty() && outStack.empty(); } };
|
思路
把后进先出的栈改为先进先出的队列
新建一个输入栈和一个输出栈,每当执行pop和peek操作时,先检查此时的输入栈是否为空,如果有东西的话就把他们全部push到输出栈并在输入栈清空,然后返回此时输出栈顶部的数据即可